// Operator.h: interface for the Operator class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_OPERATOR_H__96CF2532_F747_4767_9B5E_2CDD692A89A1__INCLUDED_)
#define AFX_OPERATOR_H__96CF2532_F747_4767_9B5E_2CDD692A89A1__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Variable.h"
#include "ComplierNote.h"
#include "SmallObject.h"

class Operator : public SmallObject 
{
public:
	Operator();
	virtual ~Operator();

public:
	virtual Variable Execute() = 0;

public:
	void LeftNote(ComplierNote* pNote){
		m_pLeftNote = pNote;
	}

	void RightNote(ComplierNote* pNote){
		m_pRightNote = pNote;
	}

protected:
	ComplierNote* LeftNote(){
		ASSERT(m_pLeftNote);
		return m_pLeftNote;
	}

	ComplierNote* RightNote(){
		ASSERT(m_pRightNote);
		return m_pRightNote;
	}

private:
	ComplierNote* m_pRightNote;
	ComplierNote* m_pLeftNote;
};

#endif // !defined(AFX_OPERATOR_H__96CF2532_F747_4767_9B5E_2CDD692A89A1__INCLUDED_)
